package edu.scsw.tech.unit2;

// 水仙花数，是指一个 n 位数（n≥3），它的每个位上的数字的 n 次幂之和等于它本身。
// 例如：1^3 + 5^3+ 3^3 = 153
// 考查循环的使用
public class NarcissisticNumber {

    public static void main(String[] args) {
        // 打印标题
        System.out.println("10000以内的水仙花数有：");

        // 遍历1到9999的所有数字
        for (int i = 1; i < 10000; i++) {
            // 判断当前数字是否为水仙花数
            if (isNarcissistic(i)) {
                // 如果是水仙花数，则打印
                System.out.println(i);
            }
        }
    }

    /**
     * 判断一个数字是否为水仙花数
     * @param number 需要判断的数字
     * @return 如果是水仙花数返回true，否则返回false
     */
    public static boolean isNarcissistic(int number) {
        // 存储原始数字
        int originalNumber = number;
        // 初始化立方和为0
        int sum = 0;

        // 循环直到数字为0
        while (number > 0) {
            // 获取数字的最后一位
            int digit = number % 10;
            // 计算该位数字的立方，累加到sum中
            sum += Math.pow(digit, 3);
            // 移除数字的最后一位
            number /= 10;
        }

        // 判断立方和是否等于原始数字
        return sum == originalNumber;
    }
}